#pragma once

//工具类
#include<string>
#include<fstream>
#include<iostream>
class Util
{
public:
    //实现一个读取文件的函数
    static bool ReadFileContent(const std::string& filename,std::string *out)
    {
        // //版本1：以文本的方式读取文件
        // std::ifstream in(filename);
        // if(!in.is_open())
        // {
        //     return false;
        // }
        // std::string line;
        // while(getline(in,line))//从打开的文件里读取
        // {
        //     *out+=line;
        // }
        // *out+="\n";
        // in.close();
        // return true;
        //版本2：以二进制的方式读取文件
        int filesize = GetFileSize(filename);
        if(filesize > 0)
        {
            std::ifstream in(filename);
            if(!in.is_open())
                return false;
            out->resize(filesize);
            in.read((char*)(out->c_str()),filesize);
            in.close();
        }
        else
        {
            return false;
        }
        return true;

    }
    static bool ReadOneLine(std::string &bigstr,std::string *out,const std::string &sep)
    {
        auto pos = bigstr.find(sep);
        if(pos == std::string::npos)
        {
            return false;
        }
        *out = bigstr.substr(0,pos);
        bigstr.erase(0,pos + sep.size());
        return true;
    }
    static int GetFileSize(const std::string& filename)
    {
        std::ifstream file(filename,std::ios::binary);
        if(!file.is_open())
        {
            return -1;
        }
        file.seekg(0,file.end);
        int filesize = file.tellg();
        file.seekg(0,file.beg);
        file.close();
        
        return filesize;
    }
};